//package com.baizhi.conf;
//
//import com.baizhi.realm.AdminRealm;
//import org.apache.shiro.authc.credential.HashedCredentialsMatcher;
//import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
//import org.apache.shiro.web.mgt.CookieRememberMeManager;
//import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
//import org.apache.shiro.web.servlet.SimpleCookie;
//import org.apache.shiro.web.session.mgt.DefaultWebSessionManager;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//
//import java.util.HashMap;
//
////添加注解此类是配置类
//@Configuration
//public class ShiroConf {
//
//    //shiro的过滤器工厂
//    @Bean
//    public ShiroFilterFactoryBean getShiroFilterFactoryBean(DefaultWebSecurityManager securityManager){
//
//        //创建shiro的过滤器工厂
//        ShiroFilterFactoryBean factoryBean = new ShiroFilterFactoryBean();
//
//        //将安全管理器交给过滤器工厂管理
//        factoryBean.setSecurityManager(securityManager);
//
//        //设置过滤器的Map
//        HashMap<String, String> map = new HashMap<>();
//
//        //设置过滤器 参数：过滤器的资源路径，过滤器
//        //anon  AnonyomusFilter             匿名过滤器 配置的资源不用认证就可以访问
//        //authc FormAuthenticationFilter    认证过滤器 配置的资源必须认证后才可以访问
//        //map.put("/**","anon");            配置匿名过滤器
//
//
//        //配置退出过滤器，退出的相关业务方法shiro中已经实现
//        map.put("/logout","logout");
//
//        //配置记住我过滤器，即免密登录
//        map.put("/**","user");
//
//        //将过滤器的map设置为过滤器链
//        factoryBean.setFilterChainDefinitionMap(map);
//
//        //设置强制登录后跳转的页面，例如login.jsp
//        factoryBean.setLoginUrl("/login/login.jsp");
//
//        return factoryBean;
//    }
//
//    //将安全管理器交给spring工厂
//    @Bean
//    public DefaultWebSecurityManager getDefaultWebSecurityManager(AdminRealm adminRealm,DefaultWebSessionManager sessionManager,CookieRememberMeManager rememberMeManager){
//        //创建安全管理器
//        DefaultWebSecurityManager manager = new DefaultWebSecurityManager();
//
//        //将自定义的Realm交给安全管理器
//        manager.setRealm(adminRealm);
//
//        //将session管理器交给安全管理器
//        manager.setSessionManager(sessionManager);
//
//        //将记住我管理器交给安全管理器
//        manager.setRememberMeManager(rememberMeManager);
//
//        return manager;
//    }
//
//    //将自定义的Realm对象交给Spring工厂管理
//    @Bean
//    public AdminRealm getUserRealm(HashedCredentialsMatcher credentialsMatcher,DefaultWebSessionManager sessionManager,CookieRememberMeManager rememberMeManager){
//
//        //创建自定义的Realm
//        AdminRealm userRealm = new AdminRealm();
//
//        //将凭证匹配器交给自定义的Realm
//        userRealm.setCredentialsMatcher(credentialsMatcher);
//        return userRealm;
//    }
//
//    //将凭证匹配器对象交给Spring工厂管理
//    @Bean
//    public HashedCredentialsMatcher getHashedCredentialsMatcher(){
//        //创建凭证匹配器
//        HashedCredentialsMatcher credentialsMatcher=new HashedCredentialsMatcher();
//        credentialsMatcher.setHashAlgorithmName("MD5"); //设置加密算法
//        credentialsMatcher.setHashIterations(1024); //设置散列次数
//        return credentialsMatcher;
//    }
//
//    //将session管理器对象交给Spring工厂管理
//    @Bean
//    public DefaultWebSessionManager getDefaultWebSessionManager(){
//        //创建session管理器对象
//        DefaultWebSessionManager sessionManager=new DefaultWebSessionManager();
//        //设置session的过期时间  没有操作开始计算时间   参数：时间(毫秒)
//        sessionManager.setGlobalSessionTimeout((1000*60)*3);
//
//        return sessionManager;
//    }
//
//    //将记住我管理器对象交给Spring工厂管理
//    @Bean
//    public CookieRememberMeManager getCookieRememberMeManager(SimpleCookie cookie){
//        //创建记住我管理器对象
//        CookieRememberMeManager rememberMeManager=new CookieRememberMeManager();
//
//        //将Cookie对象交给记住我管理器
//        rememberMeManager.setCookie(cookie);
//        return rememberMeManager;
//    }
//
//    //将Cookie对象交给Spring工厂管理
//    @Bean
//    public SimpleCookie getSimpleCookie(){
//        //创建Cookie对象
//        SimpleCookie cookie=new SimpleCookie();
//        //设置记住我的名字 登录页面checkbox框的name属性
//        //<input type="checkbox" name="remeberme" value="1"/>记住我登录七天
//        cookie.setName("remeberme");
//        //设置记住我cookie的失效时间   参数：秒
//        cookie.setMaxAge(60*5);
//
//        return cookie;
//    }
//}
